package com.huanglaoshi.java.thread;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 
 * @author huanghoulin
 * 创建1个子线程。打印1-100
 * 同时主线程也打印1-100
 * 1:创建1个继承Tread的子类（子线程）
 */


class SubThread02 implements Runnable{
	/**
	 * 2 重写父类的run()方法。
	 * 在方法内实现子线程要完成的功能。
	 */
	public void run() {
		for(int i=1;i<=100;i++){
			synchronized (this) {
				notifyAll();
				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
				String time = sdf.format(new Date());
				String str = time + "\t:\t" + Thread.currentThread().getName() + "\t:\t" + i;
				System.out.println(str);
				//输出打印的东西到文件中 共享数据
				OutputUtil.write(str, "thread/helloword.txt");
				
				try {
					wait();
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
			}
		}
	}
}

public class T02_利用实现的方式实现多线程_推荐使用_2016115 {
	
	public static void main(String[] args) {
		//3 创建1个子线程的对象
		SubThread02 st02 = new SubThread02();
		//4 调用子线程的start()方法  
		//start方法有2个作用： 1启动1个子线程  2 调用子线程的run方法。
		
		
		Thread t01 = new Thread(st02);
		Thread t02 = new Thread(st02);
		//Thread t03 = new Thread(st02);
		
		t01.setName("子线程01");
		t02.setName("子线程02");
		//t03.setName("子线程03");
		
		OutputUtil.clear();
		
		t01.start();
		t02.start();
		//t03.start();
		System.out.println("运行完成....");
	}

}
